package com.atguigu.srb.core.service;

import com.atguigu.common.result.R;
import com.atguigu.srb.core.pojo.entity.UserInfo;
import com.atguigu.srb.core.pojo.query.UserInfoQuery;
import com.atguigu.srb.core.pojo.vo.LoginVO;
import com.atguigu.srb.core.pojo.vo.RegisterVO;
import com.atguigu.srb.core.pojo.vo.UserInfoVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 用户基本信息 服务类
 * </p>
 *
 * @author gcq
 * @since 2021-04-11
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 保存用户信息
     * @param registerVo
     */
    void register(RegisterVO registerVo);

    /**
     * 用户登录
     * @param loginVO 用户登录Vo
     * @param remoteAddr 用户请求地址
     * @return
     */
    UserInfoVO login(LoginVO loginVO, String remoteAddr);

    /**
     * 分页查询会员
     * @param pageParam 分页参数
     * @param userInfoQuery 查询条件
     * @return
     */
    IPage<UserInfo> listPage(Page<UserInfo> pageParam, UserInfoQuery userInfoQuery);

    /**
     * 锁定和解锁用户
     * @param userInfo 会员对象
     */
    void lock(UserInfo userInfo);

    /**
     * 校验手机号是否注册
     * @param mobile 手机号
     * @return 该手机号是否在系统中注册过 false 没注册 true 已注册
     */
    boolean checkMobile(String mobile);
}
